Sources
Processors Used
MOS 6502
-
NES (Ricoh 2A03), Atari 2600
-
1975
-
Architecture: 8-bit, little-endian
-
Registers:
-
A (accumulator), X, Y
-
SP (8-bit), PC (16-bit)
-
Status flags (NV-BDIZC)
-
-
Address space: 16-bit → 64 KB
-
Clock:
-
NES: ~1.79 MHz (NTSC)
-
Atari 2600: ~1.19 MHz
-
-
Instruction set:
-
~56 official instructions (+ undocumented opcodes)
-
No multiply/divide
-
-
Stack:
-
Fixed at page $0100 (256 bytes)
-
-
Interrupts:
-
IRQ, NMI, RESET
-
-
Programming:
-
Assembly:
-
6502 assembly (no official syntax standard)
-
Common assembler syntaxes:
-
ca65 (cc65 toolchain)
-
NESASM style
-
KickAssembler (more modern)
-
-
-
Modern languages usable today:
-
C via cc65
-
Most common option
-
Generates reasonably efficient code but still requires asm for hot paths
-
-
Some experimental:
-
Subsets of C++ (very limited)
-
Custom DSLs/macros (KickAssembler scripting)
-
-
Zilog Z80
-
Game Boy (Sharp LR35902), Sega Master System, Sega Game Gear
-
1976
-
Architecture: 8-bit CPU with some 16-bit ops
-
Registers:
-
AF, BC, DE, HL (can split into 8-bit)
-
Alternate register set (AF', BC', DE', HL')
-
IX, IY (index registers)
-
SP, PC
-
Address space: 64 KB
-
-
Clock:
-
Game Boy: ~4.19 MHz
-
Master System: ~3.58 MHz
-
-
Instruction set:
-
Richer than 6502
-
Bit operations, block instructions
-
-
Interrupts:
-
Maskable + non-maskable
-
-
Programming:
-
Assembly:
-
Z80 assembly
-
Game Boy uses a modified Z80-like ISA (LR35902)
-
-
Modern languages usable today:
-
C via:
-
GBDK (Game Boy)
-
SDCC (Small Device C Compiler)
-
-
Limited:
-
Some Rust experiments (not mainstream)
-
Very constrained C++
-
-
-
Reality:
-
C is widely used for Game Boy
-
Assembly still required for:
-
Graphics
-
Interrupts
-
Tight loops
-
-
-
Motorola 68000
-
Sega Genesis / Mega Drive
-
1979
-
Architecture: 16-bit external bus, 32-bit internal
-
Registers:
-
8 data registers (D0–D7, 32-bit)
-
8 address registers (A0–A7, 32-bit)
-
-
Address space: 24-bit → 16 MB
-
Clock: ~7.67 MHz (NTSC)
-
Instruction set:
-
Rich CISC, orthogonal
-
Built-in multiply/divide
-
Endianness: Big-endian
-
-
Stack:
-
Uses A7 (user/supervisor modes)
-
-
Interrupts:
-
7 priority levels
-
-
Notable traits:
-
Very clean ISA
-
Excellent for C
-
-
Console context:
-
Paired with a Z80 for audio/control
-
-
Programming:
-
Assembly:
-
68000 assembly (fairly standardized)
-
Syntax variants:
-
GNU as
-
VASM
-
Devkit-specific assemblers
-
-
-
Modern languages usable today:
-
C (excellent support)
-
SGDK (very popular)
-
GCC-based cross-compilers
-
C++ (limited but usable)
-
Requires care (no heavy runtime features)
-
Experimental:
-
Rust (early-stage hobby tooling)
-
-
-
Reality:
-
This is the first “comfortable” C platform
-
Many full games written mostly in C
-
-
Sharp LR35902
-
1980
-
Clock: ~4.19 MHz (GB), ~8.38 MHz (GBC double speed)
-
Architecture: 8-bit
-
Registers: AF, BC, DE, HL, SP, PC
-
Missing vs Z80:
-
No IX/IY
-
No many advanced ops
-
-
Programming:
-
Assembly:
-
Game Boy-specific assembly (RGBDS syntax common)
-
-
Modern languages:
-
C via GBDK
-
SDCC backend
-
Some Rust experiments (not mature)
-
-
Reality:
-
One of the best-supported retro platforms today
-
C is very viable
-
-
WDC 65C816
-
SNES (Ricoh 5A22)
-
1983
-
Architecture: 8/16-bit hybrid
-
Registers:
-
A (8 or 16-bit)
-
X, Y (8 or 16-bit)
-
16-bit SP, PC
-
Data Bank (DB), Program Bank (PB)
-
-
Address space: 24-bit → 16 MB
-
Clock:
-
~3.58 MHz (varies with memory access)
-
-
Modes:
-
Emulation mode (6502-compatible)
-
Native mode (full 16-bit)
-
-
Instruction set:
-
Extended 6502
-
-
Interrupts:
-
IRQ, NMI, ABORT
-
-
Notable traits:
-
Banked memory model
-
Still relatively constrained vs 68000
-
-
Programming:
-
Assembly:
-
65C816 assembly (extension of 6502)
-
Common tools:
-
WLA-DX
-
ca65 (with extensions)
-
-
-
Modern languages usable today:
-
C via cc65
-
Works, but:
-
Banked memory complicates everything
-
Codegen not ideal for large projects
-
-
Minimal higher-level support
-
-
Reality:
-
Heavy assembly usage still common
-
C is viable but awkward for large systems
-
-
MIPS R3000
-
PlayStation (Sony)
-
1988
-
Architecture: 32-bit RISC
-
Registers:
-
32 general-purpose registers (32-bit)
-
HI/LO (multiply/divide results)
-
-
Address space: 32-bit → 4 GB (segmented)
-
Clock: ~33.87 MHz
-
Pipeline: 5-stage pipeline
-
Instruction set:
-
Load/store architecture
-
Fixed 32-bit instructions
-
FPU: None (software or coprocessor)
-
-
Endianness: Little-endian (PS1)
-
Notable traits:
-
Branch delay slots
-
Requires careful pipeline-aware code
-
-
Console context:
-
GPU + GTE (geometry transform engine)
-
-
Programming:
-
Assembly:
-
MIPS I assembly
-
-
Modern languages usable today:
-
C (primary language)
-
PSn00bSDK
-
-
C++ (usable)
-
Often used with restrictions (no RTTI/exceptions)
-
-
Experimental:
-
Rust (very niche, not production-ready)
-
-
-
Reality:
-
Mostly C + some assembly
-
Assembly used for:
-
GPU command building
-
Performance-critical math
-
-
-
Hitachi SH-2
-
Sega Saturn (dual CPU setup)
-
1990
-
Architecture: 32-bit RISC
-
Registers:
-
16 general-purpose registers
-
PC, PR (procedure register), SR
-
-
Clock: ~28.6 MHz
-
Pipeline: 5-stage
-
Instruction set:
-
Fixed 16-bit instructions (compact RISC)
-
-
Cache: Small instruction cache
-
Notable traits:
-
Designed for embedded use
-
-
Console context:
-
Dual SH-2 CPUs (parallelism complexity)
-
Difficult synchronization
-
-
Programming:
-
Assembly:
-
SH-2 assembly (compact 16-bit instruction encoding)
-
-
Modern languages usable today:
-
C (main option)
-
GCC cross-compilers exist
-
-
Limited:
-
C++ possible but uncommon
-
-
-
Reality:
-
Biggest difficulty is not language—it’s:
-
Dual CPU synchronization
-
Complex hardware
-
-
-
NEC VR4300
-
Nintendo 64
-
Architecture: MIPS III (64-bit capable)
-
Registers:
-
32 general-purpose (64-bit)
-
-
Clock: ~93.75 MHz
-
Address space: 32-bit (console-limited)
-
FPU: Integrated
-
Cache:
-
16 KB instruction
-
8 KB data
-
-
Pipeline: 5-stage
-
Notable traits:
-
64-bit registers but often used in 32-bit mode
-
-
Console context:
-
Tight coupling with RCP (graphics + audio)
-
-
Programming:
-
Assembly:
-
MIPS III assembly
-
-
Modern languages usable today:
-
C (primary)
-
libultra-based toolchains
-
modern homebrew SDKs
-
-
C++ (commonly used today in homebrew)
-
Experimental:
-
Rust (early-stage)
-
-
-
Reality:
-
Most modern N64 homebrew is C or C++
-
Assembly used selectively
-
-
Screen Resolutions
-
160x144px
-
Game Boy / Game Boy Color / Game Gear
-
1.11 (10:9)
-
-
160x152px
-
Neo Geo Pocket
-
1.05
-
-
224x144px
-
WonderSwan
-
(14:9)
-
-
240x160px
-
Game Boy Advance
-
1.5 (3:2 pure)
-
-
256x192px
-
Sega Master System
-
1.33 (4:3 pure)
-
-
256x224px
-
Super Nintendo (most games)
-
-
320x224px
-
Sega Genesis (Non-square pixels) / Sega Saturn
-
1.43 (4:3)
-
Confortável
-
-
256x240px
-
Nintendo (NES) / Super Nintendo (SNES)
-
1.07 (4.3)
-
-
320x240px
-
PlayStation 1 / Nintendo 64
-
1.33 (4:3 pure)
-
Confortável
-
-
400x240px
-
Nintendo 3DS Top Screen
-
1.67 (15:9)
-
-
400x272px
-
1.76:1 (16:9)
-
Emulation
-
-
BUNDLE (EVERYTHING YOU NEED): https://amzn.to/4aZWJK4
-
RASPBERRY PI 5: https://amzn.to/3Qp2SWE
-
RASPBERRY PI 4: https://amzn.to/41fq1RI
-
GAMEPI5 CASE: https://amzn.to/4i0cenS
-
GAMEPI4 CASE: https://amzn.to/4hZNGuS
-
POWER SUPPLY: https://amzn.to/4b4Jqbh
-
MICROSD CARD (256GB) https://amzn.to/40ZES1p
-
MICRO-HDMI ADAPTER: https://amzn.to/3WYUO2U
-
BLUETOOTH CONTROLLER: https://amzn.to/4gDYqyc
-